View Javadoc

1   /***
2    * Copyright (c) 2003 held jointly by the individual authors.            
3    *                                                                          
4    * This library is free software; you can redistribute it and/or modify it    
5    * under the terms of the GNU Lesser General Public License as published      
6    * by the Free Software Foundation; either version 2.1 of the License, or 
7    * (at your option) any later version.                                            
8    *                                                                            
9    * This library is distributed in the hope that it will be useful, but 
10   * WITHOUT ANY WARRANTY; with out even the implied warranty of 
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
12   * GNU Lesser General Public License for more details.                                                  
13   *                                                                           
14   * You should have received a copy of the GNU Lesser General Public License   
15   * along with this library;  if not, write to the Free Software Foundation,   
16   * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.              
17   *                                                                            
18   * > http://www.gnu.org/copyleft/lesser.html                                  
19   * > http://www.opensource.org/licenses/lgpl-license.php
20   */
21  package net.mlw.vlh.adapter.jdbc.util;
22  
23  /***
24   * @author Matthew L. Wilson
25   * @version $Revision: 1.2 $ $Date: 2006/04/18 17:14:19 $
26   */
27  public class SqlPagingSupport
28  {
29     public static final String ORACLE = "oracle";
30     
31     private String pagedQueryPreSql;
32     private String pagedQueryPostSql;
33     
34     public StringBuffer getPagedQuery(String sql)
35     {
36        StringBuffer buffer = new StringBuffer(500);
37        buffer.append(pagedQueryPreSql);
38        buffer.append(sql);
39        buffer.append(pagedQueryPostSql);
40        
41        return buffer;
42     }
43     
44     public StringBuffer getCountQuery(String sql)
45     {
46        StringBuffer buffer = new StringBuffer(sql.length() + 100);
47        return buffer.append("SELECT count(*) FROM (").append(sql).append(")");
48     }
49     
50     public void setDatabase(String database)
51     {
52        if(ORACLE.equalsIgnoreCase(database))
53        {
54           pagedQueryPreSql = "SELECT * FROM (SELECT INNER.*, ROWNUM as RECORDNUM FROM (";
55           pagedQueryPostSql = ") INNER ) WRAPPED WHERE WRAPPED.RECORDNUM BETWEEN (([pagingPage]-1)*[pagingNumberPer]+1) AND (([pagingPage]-1)*[pagingNumberPer]+[pagingNumberPer])";
56        }
57        else
58        {
59           throw new NullPointerException(database + " is not supported ("+ORACLE+").");
60        }
61     }
62     
63     public void setPagedQueryPostSql(String pagedQueryPostSql)
64     {
65        this.pagedQueryPostSql = pagedQueryPostSql;
66     }
67     public void setPagedQueryPreSql(String pagedQueryPreSql)
68     {
69        this.pagedQueryPreSql = pagedQueryPreSql;
70     }
71  }